--- /dev/null
+; UltimateKEYS - 2020-05-19.ahk\r
+\r
+; Created by : Pieter Degroote\r
+\r
+; License : GNU General Public License Version 3\r
+\r
+; Website : https://github.com/pieter-degroote/UltimateKEYS\r
+\r
+\r
+; Requirements :\r
+\r
+; Keyboard layout (on Windows OS) : US QWERTY\r
+\r
+; AutoHotkey v1.1 (https://www.autohotkey.com/)\r
+\r
+\r
+\r
+; Dead Key : Circumflex Accent\r
+\r
+dkCircumflex := ComObjCreate("Scripting.Dictionary")\r
+dkCircumflex.item("a") := "â" ; (u+00e2) a with circumflex\r
+dkCircumflex.item("A") := "Â" ; (u+00c2) A with circumflex\r
+dkCircumflex.item("c") := "ĉ" ; (u+0109) c with circumflex\r
+dkCircumflex.item("C") := "Ĉ" ; (u+0108) C with circumflex\r
+dkCircumflex.item("e") := "ê" ; (u+00ea) e with circumflex\r
+dkCircumflex.item("E") := "Ê" ; (u+00ca) E with circumflex\r
+dkCircumflex.item("g") := "ĝ" ; (u+011d) g with circumflex\r
+dkCircumflex.item("G") := "Ĝ" ; (u+011c) G with circumflex\r
+dkCircumflex.item("h") := "ĥ" ; (u+0125) h with circumflex\r
+dkCircumflex.item("H") := "Ĥ" ; (u+0124) H with circumflex\r
+dkCircumflex.item("i") := "î" ; (u+00ee) i with circumflex\r
+dkCircumflex.item("I") := "Î" ; (u+00ce) I with circumflex\r
+dkCircumflex.item("j") := "ĵ" ; (u+0135) j with circumflex\r
+dkCircumflex.item("J") := "Ĵ" ; (u+0134) J with circumflex\r
+dkCircumflex.item("o") := "ô" ; (u+00f4) o with circumflex\r
+dkCircumflex.item("O") := "Ô" ; (u+00d4) O with circumflex\r
+dkCircumflex.item("s") := "ŝ" ; (u+015d) s with circumflex\r
+dkCircumflex.item("S") := "Ŝ" ; (u+015c) S with circumflex\r
+dkCircumflex.item("u") := "û" ; (u+00fb) u with circumflex\r
+dkCircumflex.item("U") := "Û" ; (u+00db) U with circumflex\r
+dkCircumflex.item("w") := "ŵ" ; (u+0175) w with circumflex\r
+dkCircumflex.item("W") := "Ŵ" ; (u+0174) W with circumflex\r
+dkCircumflex.item("y") := "ŷ" ; (u+0177) y with circumflex\r
+dkCircumflex.item("Y") := "Ŷ" ; (u+0176) Y with circumflex\r
+dkCircumflex.item("z") := "ẑ" ; (u+1e91) z with circumflex\r
+dkCircumflex.item("Z") := "Ẑ" ; (u+1e90) Z with circumflex\r
+\r
+; Smart error-tolerant optimization for circumflex in French (begin)\r
+\r
+dkCircumflex.item("ä") := "â" ; (u+00e2) a with circumflex\r
+dkCircumflex.item("Ä") := "Â" ; (u+00c2) A with circumflex\r
+dkCircumflex.item("ë") := "ê" ; (u+00ea) e with circumflex\r
+dkCircumflex.item("Ë") := "Ê" ; (u+00ca) E with circumflex\r
+dkCircumflex.item("ï") := "î" ; (u+00ee) i with circumflex\r
+dkCircumflex.item("Ï") := "Î" ; (u+00ce) I with circumflex\r
+dkCircumflex.item("ö") := "ô" ; (u+00f4) o with circumflex\r
+dkCircumflex.item("Ö") := "Ô" ; (u+00d4) O with circumflex\r
+dkCircumflex.item("ü") := "û" ; (u+00fb) u with circumflex\r
+dkCircumflex.item("Ü") := "Û" ; (u+00db) U with circumflex\r
+\r
+; Smart error-tolerant optimization for circumflex in French (end)\r
+\r
+dkCircumflex.item("n") := "₦" ; (u+20a6) Nigerian naira\r
+dkCircumflex.item("N") := "₦" ; (u+20a6) Nigerian naira\r
+dkCircumflex.item("^") := "{^}" ; (u+005e) circumflex accent\r
+dkCircumflex.item(" ") := "{^}" ; (u+005e) circumflex accent\r
+\r
+\r
+; Dead Key : Caron\r
+\r
+dkCaron := ComObjCreate("Scripting.Dictionary")\r
+dkCaron.item("a") := "ǎ" ; (u+01ce) a with caron\r
+dkCaron.item("A") := "Ǎ" ; (u+01cd) A with caron\r
+dkCaron.item("c") := "č" ; (u+010d) c with caron\r
+dkCaron.item("C") := "Č" ; (u+010c) C with caron\r
+dkCaron.item("d") := "ď" ; (u+010f) d with caron\r
+dkCaron.item("D") := "Ď" ; (u+010e) D with caron\r
+dkCaron.item("e") := "ě" ; (u+011b) e with caron\r
+dkCaron.item("E") := "Ě" ; (u+011a) E with caron\r
+dkCaron.item("g") := "ǧ" ; (u+01e7) g with caron\r
+dkCaron.item("G") := "Ǧ" ; (u+01e6) G with caron\r
+dkCaron.item("h") := "ȟ" ; (u+021f) h with caron\r
+dkCaron.item("H") := "Ȟ" ; (u+021e) H with caron\r
+dkCaron.item("i") := "ǐ" ; (u+01d0) i with caron\r
+dkCaron.item("I") := "Ǐ" ; (u+01cf) I with caron\r
+dkCaron.item("j") := "ǰ" ; (u+01f0) j with caron\r
+dkCaron.item("k") := "ǩ" ; (u+01e9) k with caron\r
+dkCaron.item("K") := "Ǩ" ; (u+01e8) K with caron\r
+dkCaron.item("l") := "ľ" ; (u+013e) l with caron\r
+dkCaron.item("L") := "Ľ" ; (u+013d) L with caron\r
+dkCaron.item("n") := "ň" ; (u+0148) n with caron\r
+dkCaron.item("N") := "Ň" ; (u+0147) N with caron\r
+dkCaron.item("o") := "ǒ" ; (u+01d2) o with caron\r
+dkCaron.item("O") := "Ǒ" ; (u+01d1) O with caron\r
+dkCaron.item("r") := "ř" ; (u+0159) r with caron\r
+dkCaron.item("R") := "Ř" ; (u+0158) R with caron\r
+dkCaron.item("s") := "š" ; (u+0161) s with caron\r
+dkCaron.item("S") := "Š" ; (u+0160) S with caron\r
+dkCaron.item("t") := "ť" ; (u+0165) t with caron\r
+dkCaron.item("T") := "Ť" ; (u+0164) T with caron\r
+dkCaron.item("u") := "ǔ" ; (u+01d4) u with caron\r
+dkCaron.item("U") := "Ǔ" ; (u+01d3) U with caron\r
+dkCaron.item("v") := "ǚ" ; (u+01da) u with diaeresis and caron\r
+dkCaron.item("V") := "Ǚ" ; (u+01d9) U with diaeresis and caron\r
+dkCaron.item("z") := "ž" ; (u+017e) z with caron\r
+dkCaron.item("Z") := "Ž" ; (u+017d) Z with caron\r
+dkCaron.item("3") := "ǯ" ; (u+01ef) small letter ezh with caron\r
+dkCaron.item("#") := "Ǯ" ; (u+01ee) capital letter ezh with caron\r
+\r
+; Smart error-tolerant optimization for circumflex in French (begin)\r
+\r
+dkCaron.item("ä") := "â" ; (u+00e2) a with circumflex\r
+dkCaron.item("Ä") := "Â" ; (u+00c2) A with circumflex\r
+dkCaron.item("ë") := "ê" ; (u+00ea) e with circumflex\r
+dkCaron.item("Ë") := "Ê" ; (u+00ca) E with circumflex\r
+dkCaron.item("ï") := "î" ; (u+00ee) i with circumflex\r
+dkCaron.item("Ï") := "Î" ; (u+00ce) I with circumflex\r
+dkCaron.item("ö") := "ô" ; (u+00f4) o with circumflex\r
+dkCaron.item("Ö") := "Ô" ; (u+00d4) O with circumflex\r
+dkCaron.item("ü") := "û" ; (u+00fb) u with circumflex\r
+dkCaron.item("Ü") := "Û" ; (u+00db) U with circumflex\r
+\r
+; Smart error-tolerant optimization for circumflex in French (end)\r
+\r
+dkCaron.item(" ") := "ˇ" ; (u+02c7) caron\r
+\r
+\r
+; Dead Key : Ring/Dot Above\r
+\r
+dkRingDotAbove := ComObjCreate("Scripting.Dictionary")\r
+dkRingDotAbove.item("a") := "å" ; (u+00e5) a with ring above\r
+dkRingDotAbove.item("A") := "Å" ; (u+00c5) A with ring above\r
+dkRingDotAbove.item("ä") := "ȧ" ; (u+0227) a with dot above\r
+dkRingDotAbove.item("Ä") := "Ȧ" ; (u+0226) A with dot above\r
+dkRingDotAbove.item("b") := "ḃ" ; (u+1e03) b with dot above\r
+dkRingDotAbove.item("B") := "Ḃ" ; (u+1e02) B with dot above\r
+dkRingDotAbove.item("c") := "ċ" ; (u+010b) c with dot above\r
+dkRingDotAbove.item("C") := "Ċ" ; (u+010a) C with dot above\r
+dkRingDotAbove.item("d") := "ḋ" ; (u+1e0b) d with dot above\r
+dkRingDotAbove.item("D") := "Ḋ" ; (u+1e0a) D with dot above\r
+dkRingDotAbove.item("e") := "ė" ; (u+0117) e with dot above\r
+dkRingDotAbove.item("E") := "Ė" ; (u+0116) E with dot above\r
+dkRingDotAbove.item("f") := "ḟ" ; (u+1e1f) f with dot above\r
+dkRingDotAbove.item("F") := "Ḟ" ; (u+1e1e) F with dot above\r
+dkRingDotAbove.item("g") := "ġ" ; (u+0121) g with dot above\r
+dkRingDotAbove.item("G") := "Ġ" ; (u+0120) G with dot above\r
+dkRingDotAbove.item("h") := "ḣ" ; (u+1e23) h with dot above\r
+dkRingDotAbove.item("H") := "Ḣ" ; (u+1e22) H with dot above\r
+dkRingDotAbove.item("i") := "ı" ; (u+0131) dotless i (Turkish, Azerbaijani)\r
+dkRingDotAbove.item("I") := "İ" ; (u+0130) I with dot above (Turkish, Azerbaijani)\r
+dkRingDotAbove.item("j") := "ȷ" ; (u+0237) dotless j\r
+dkRingDotAbove.item("l") := "ŀ" ; (u+0140) l with middle dot\r
+dkRingDotAbove.item("L") := "Ŀ" ; (u+013f) L with middle dot\r
+dkRingDotAbove.item("m") := "ṁ" ; (u+1e41) m with dot above\r
+dkRingDotAbove.item("M") := "Ṁ" ; (u+1e40) M with dot above\r
+dkRingDotAbove.item("n") := "ṅ" ; (u+1e45) n with dot above\r
+dkRingDotAbove.item("N") := "Ṅ" ; (u+1e44) N with dot above\r
+dkRingDotAbove.item("o") := "ȯ" ; (u+022f) o with dot above\r
+dkRingDotAbove.item("O") := "Ȯ" ; (u+022e) O with dot above\r
+dkRingDotAbove.item("p") := "ṗ" ; (u+1e57) p with dot above\r
+dkRingDotAbove.item("P") := "Ṗ" ; (u+1e56) P with dot above\r
+dkRingDotAbove.item("r") := "ṙ" ; (u+1e59) r with dot above\r
+dkRingDotAbove.item("R") := "Ṙ" ; (u+1e58) R with dot above\r
+dkRingDotAbove.item("s") := "ṡ" ; (u+1e61) s with dot above\r
+dkRingDotAbove.item("S") := "Ṡ" ; (u+1e60) S with dot above\r
+dkRingDotAbove.item("t") := "ṫ" ; (u+1e6b) t with dot above\r
+dkRingDotAbove.item("T") := "Ṫ" ; (u+1e6a) T with dot above\r
+dkRingDotAbove.item("u") := "ů" ; (u+016f) u with ring above\r
+dkRingDotAbove.item("U") := "Ů" ; (u+016e) U with ring above\r
+dkRingDotAbove.item("w") := "ẇ" ; (u+1e87) w with dot above\r
+dkRingDotAbove.item("W") := "Ẇ" ; (u+1e86) W with dot above\r
+dkRingDotAbove.item("å") := "ẘ" ; (u+1e98) w with ring above\r
+dkRingDotAbove.item("x") := "ẋ" ; (u+1e8b) x with dot above\r
+dkRingDotAbove.item("X") := "Ẋ" ; (u+1e8a) X with dot above\r
+dkRingDotAbove.item("y") := "ẏ" ; (u+1e8f) y with dot above\r
+dkRingDotAbove.item("Y") := "Ẏ" ; (u+1e8e) Y with dot above\r
+dkRingDotAbove.item("ÿ") := "ẙ" ; (u+1e99) y with ring above\r
+dkRingDotAbove.item("z") := "ż" ; (u+017c) z with dot above\r
+dkRingDotAbove.item("Z") := "Ż" ; (u+017b) Z with dot above\r
+dkRingDotAbove.item(" ") := "˙" ; (u+02d9) dot above\r
+\r
+\r
+; Dead Key : Macron/Stroke\r
+\r
+dkMacronStroke := ComObjCreate("Scripting.Dictionary")\r
+dkMacronStroke.item("a") := "ā" ; (u+0101) a with macron\r
+dkMacronStroke.item("A") := "Ā" ; (u+0100) A with macron\r
+dkMacronStroke.item("æ") := "ǣ" ; (u+01e3) ae with macron\r
+dkMacronStroke.item("Æ") := "Ǣ" ; (u+01e2) AE with macron\r
+dkMacronStroke.item("b") := "ƀ" ; (u+0180) b with stroke\r
+dkMacronStroke.item("B") := "Ƀ" ; (u+0243) B with stroke\r
+dkMacronStroke.item("d") := "đ" ; (u+0111) d with stroke\r
+dkMacronStroke.item("D") := "Đ" ; (u+0110) D with stroke\r
+dkMacronStroke.item("e") := "ē" ; (u+0113) e with macron\r
+dkMacronStroke.item("E") := "Ē" ; (u+0112) E with macron\r
+dkMacronStroke.item("g") := "ǥ" ; (u+01e5) g with stroke (Skolt Sami)\r
+dkMacronStroke.item("G") := "Ǥ" ; (u+01e4) G with stroke (Skolt Sami)\r
+dkMacronStroke.item("é") := "ḡ" ; (u+1e21) g with macron\r
+dkMacronStroke.item("É") := "Ḡ" ; (u+1e20) G with macron\r
+dkMacronStroke.item("h") := "ħ" ; (u+0127) h with stroke (Maltese)\r
+dkMacronStroke.item("H") := "Ħ" ; (u+0126) H with stroke (Maltese)\r
+dkMacronStroke.item("i") := "ī" ; (u+012b) i with macron\r
+dkMacronStroke.item("I") := "Ī" ; (u+012a) I with macron\r
+dkMacronStroke.item("ï") := "ɨ" ; (u+0268) i with stroke\r
+dkMacronStroke.item("Ï") := "Ɨ" ; (u+0197) I with stroke\r
+dkMacronStroke.item("j") := "ɉ" ; (u+0249) j with stroke\r
+dkMacronStroke.item("J") := "Ɉ" ; (u+0248) J with stroke\r
+dkMacronStroke.item("l") := "ł" ; (u+0142) l with stroke\r
+dkMacronStroke.item("L") := "Ł" ; (u+0141) L with stroke\r
+dkMacronStroke.item("ø") := "ḻ" ; (u+1e3b) l with line below\r
+dkMacronStroke.item("Ø") := "Ḻ" ; (u+1e3a) L with line below\r
+dkMacronStroke.item("o") := "ō" ; (u+014d) o with macron\r
+dkMacronStroke.item("O") := "Ō" ; (u+014c) O with macron\r
+dkMacronStroke.item("ö") := "ǭ" ; (u+01ed) o with ogonek and macron\r
+dkMacronStroke.item("Ö") := "Ǭ" ; (u+01ec) O with ogonek and macron\r
+dkMacronStroke.item("p") := "ᵽ" ; (u+1d7d) p with stroke\r
+dkMacronStroke.item("P") := "Ᵽ" ; (u+2c63) P with stroke\r
+dkMacronStroke.item("r") := "ɍ" ; (u+024d) r with stroke\r
+dkMacronStroke.item("R") := "Ɍ" ; (u+024c) R with stroke\r
+dkMacronStroke.item("t") := "ŧ" ; (u+0167) t with stroke\r
+dkMacronStroke.item("T") := "Ŧ" ; (u+0166) T with stroke\r
+dkMacronStroke.item("u") := "ū" ; (u+016b) u with macron\r
+dkMacronStroke.item("U") := "Ū" ; (u+016a) U with macron\r
+dkMacronStroke.item("ü") := "ʉ" ; (u+0289) u with bar\r
+dkMacronStroke.item("Ü") := "Ʉ" ; (u+0244) U with bar\r
+dkMacronStroke.item("y") := "ȳ" ; (u+0233) y with macron\r
+dkMacronStroke.item("Y") := "Ȳ" ; (u+0232) Y with macron\r
+dkMacronStroke.item("ÿ") := "ɏ" ; (u+024f) y with stroke\r
+dkMacronStroke.item("Ÿ") := "Ɏ" ; (u+024c) Y with stroke\r
+dkMacronStroke.item("z") := "ƶ" ; (u+01b6) z with stroke\r
+dkMacronStroke.item("Z") := "Ƶ" ; (u+01b5) Z with stroke\r
+dkMacronStroke.item(" ") := "¯" ; (u+00af) macron\r
+\r
+\r
+; Dead Key : Cedilla/Ogonek\r
+\r
+dkCedillaOgonek := ComObjCreate("Scripting.Dictionary")\r
+dkCedillaOgonek.item("a") := "ą" ; (u+0105) a with ogonek\r
+dkCedillaOgonek.item("A") := "Ą" ; (u+0104) A with ogonek\r
+dkCedillaOgonek.item("c") := "ç" ; (u+00e7) c with cedilla\r
+dkCedillaOgonek.item("C") := "Ç" ; (u+00c7) C with cedilla\r
+dkCedillaOgonek.item("d") := "ḑ" ; (u+1e11) d with cedilla\r
+dkCedillaOgonek.item("D") := "Ḑ" ; (u+1e10) D with cedilla\r
+dkCedillaOgonek.item("e") := "ę" ; (u+0119) e with ogonek\r
+dkCedillaOgonek.item("E") := "Ę" ; (u+0118) E with ogonek\r
+dkCedillaOgonek.item("ë") := "ȩ" ; (u+0229) e with cedilla\r
+dkCedillaOgonek.item("Ë") := "Ȩ" ; (u+0228) E with cedilla\r
+dkCedillaOgonek.item("g") := "ģ" ; (u+0123) g with cedilla\r
+dkCedillaOgonek.item("G") := "Ģ" ; (u+0122) G with cedilla\r
+dkCedillaOgonek.item("h") := "ḩ" ; (u+1e29) h with cedilla\r
+dkCedillaOgonek.item("H") := "Ḩ" ; (u+1e28) H with cedilla\r
+dkCedillaOgonek.item("i") := "į" ; (u+012f) i with ogonek\r
+dkCedillaOgonek.item("I") := "Į" ; (u+012e) I with ogonek\r
+dkCedillaOgonek.item("k") := "ķ" ; (u+0137) k with cedilla\r
+dkCedillaOgonek.item("K") := "Ķ" ; (u+0136) K with cedilla\r
+dkCedillaOgonek.item("l") := "ļ" ; (u+013c) l with cedilla\r
+dkCedillaOgonek.item("L") := "Ļ" ; (u+013b) L with cedilla\r
+dkCedillaOgonek.item("n") := "ņ" ; (u+0146) n with cedilla\r
+dkCedillaOgonek.item("N") := "Ņ" ; (u+0145) N with cedilla\r
+dkCedillaOgonek.item("o") := "ǫ" ; (u+01eb) o with ogonek\r
+dkCedillaOgonek.item("O") := "Ǫ" ; (u+01ea) O with ogonek\r
+dkCedillaOgonek.item("ö") := "ǭ" ; (u+01ed) o with ogonek and macron\r
+dkCedillaOgonek.item("Ö") := "Ǭ" ; (u+01ec) O with ogonek and macron\r
+dkCedillaOgonek.item("r") := "ŗ" ; (u+0157) r with cedilla\r
+dkCedillaOgonek.item("R") := "Ŗ" ; (u+0156) R with cedilla\r
+dkCedillaOgonek.item("s") := "ş" ; (u+015f) s with cedilla\r
+dkCedillaOgonek.item("S") := "Ş" ; (u+015e) S with cedilla\r
+dkCedillaOgonek.item("t") := "ţ" ; (u+0163) t with cedilla\r
+dkCedillaOgonek.item("T") := "Ţ" ; (u+0162) T with cedilla\r
+dkCedillaOgonek.item("u") := "ų" ; (u+0173) u with ogonek\r
+dkCedillaOgonek.item("U") := "Ų" ; (u+0172) U with ogonek\r
+dkCedillaOgonek.item("w") := "₩" ; (u+20a9) South Korean won\r
+dkCedillaOgonek.item("W") := "₩" ; (u+20a9) South Korean won\r
+dkCedillaOgonek.item("1") := "–" ; (u+2013) en dash\r
+dkCedillaOgonek.item("2") := "—" ; (u+2014) em dash\r
+dkCedillaOgonek.item("3") := "―" ; (u+2015) horizontal bar\r
+dkCedillaOgonek.item("4") := "‐" ; (u+2010) hyphen\r
+dkCedillaOgonek.item("9") := "‒" ; (u+2012) figure dash\r
+dkCedillaOgonek.item("0") := "" ; (u+00ad) soft hyphen\r
+dkCedillaOgonek.item("-") := "‑" ; (u+2011) non-breaking hyphen\r
+dkCedillaOgonek.item(".") := "˛" ; (u+02db) ogonek\r
+dkCedillaOgonek.item(" ") := "¸" ; (u+00b8) cedilla\r
+\r
+\r
+; Dead Key : Breve/Special\r
+\r
+dkBreveSpecial := ComObjCreate("Scripting.Dictionary")\r
+dkBreveSpecial.item("a") := "ă" ; (u+0103) a with breve\r
+dkBreveSpecial.item("A") := "Ă" ; (u+0102) A with breve\r
+dkBreveSpecial.item("d") := "ɖ" ; (u+0256) small letter d with tail\r
+dkBreveSpecial.item("D") := "Ɖ" ; (u+0189) capital letter African D\r
+dkBreveSpecial.item("e") := "ĕ" ; (u+0115) e with breve\r
+dkBreveSpecial.item("E") := "Ĕ" ; (u+0114) E with breve\r
+dkBreveSpecial.item("ë") := "ǝ" ; (u+01dd) small turned e\r
+dkBreveSpecial.item("Ë") := "Ǝ" ; (u+018e) capital reversed E\r
+dkBreveSpecial.item("f") := "ə" ; (u+0259) small letter schwa (Azerbaijani)\r
+dkBreveSpecial.item("F") := "Ə" ; (u+018f) capital letter schwa (Azerbaijani)\r
+dkBreveSpecial.item("g") := "ğ" ; (u+011f) g with breve\r
+dkBreveSpecial.item("G") := "Ğ" ; (u+011e) G with breve\r
+dkBreveSpecial.item("é") := "ꬶ" ; (u+ab36) cross-tailed g\r
+dkBreveSpecial.item("h") := "ɣ" ; (u+0263) latin small gamma\r
+dkBreveSpecial.item("H") := "Ɣ" ; (u+0194) latin capital gamma\r
+dkBreveSpecial.item("i") := "ĭ" ; (u+012d) i with breve\r
+dkBreveSpecial.item("I") := "Ĭ" ; (u+012c) I with breve\r
+dkBreveSpecial.item("j") := "ij" ; (u+0133) ligature ij\r
+dkBreveSpecial.item("J") := "IJ" ; (u+0132) ligature IJ\r
+dkBreveSpecial.item("k") := "ĸ" ; (u+0138) small letter kra\r
+dkBreveSpecial.item("n") := "ŋ" ; (u+014b) small letter eng(ma)\r
+dkBreveSpecial.item("N") := "Ŋ" ; (u+014a) capital letter eng(ma)\r
+dkBreveSpecial.item("o") := "ŏ" ; (u+014f) o with breve\r
+dkBreveSpecial.item("O") := "Ŏ" ; (u+014e) O with breve\r
+dkBreveSpecial.item("ö") := "ɔ" ; (u+0254) small open o\r
+dkBreveSpecial.item("Ö") := "Ɔ" ; (u+0186) capital open O\r
+dkBreveSpecial.item("s") := "ș" ; (u+0219) s with comma below (Romanian)\r
+dkBreveSpecial.item("S") := "Ș" ; (u+0218) S with comma below (Romanian)\r
+dkBreveSpecial.item("t") := "ț" ; (u+021b) t with comma below (Romanian)\r
+dkBreveSpecial.item("T") := "Ț" ; (u+021a) T with comma below (Romanian)\r
+dkBreveSpecial.item("u") := "ŭ" ; (u+016d) u with breve\r
+dkBreveSpecial.item("U") := "Ŭ" ; (u+016c) U with breve\r
+dkBreveSpecial.item("v") := "ʊ" ; (u+028a) latin small letter upsilon\r
+dkBreveSpecial.item("V") := "Ʊ" ; (u+01b1) latin capital letter upsilon\r
+dkBreveSpecial.item("w") := "ƿ" ; (u+01bf) small letter wynn\r
+dkBreveSpecial.item("W") := "Ƿ" ; (u+01f7) capital letter wynn\r
+dkBreveSpecial.item("y") := "ȝ" ; (u+021d) small letter yogh\r
+dkBreveSpecial.item("Y") := "Ȝ" ; (u+021c) capital letter yogh\r
+dkBreveSpecial.item("3") := "ʒ" ; (u+0292) small letter ezh\r
+dkBreveSpecial.item("#") := "Ʒ" ; (u+01b7) capital letter ezh\r
+dkBreveSpecial.item(" ") := "˘" ; (u+02d8) breve\r
+\r
+\r
+; Dead Key : Acute Accent\r
+\r
+dkAcuteAccent := ComObjCreate("Scripting.Dictionary")\r
+dkAcuteAccent.item("a") := "á" ; (u+00e1) a with acute\r
+dkAcuteAccent.item("A") := "Á" ; (u+00c1) A with acute\r
+dkAcuteAccent.item("b") := "ɓ" ; (u+0253) b with hook\r
+dkAcuteAccent.item("B") := "Ɓ" ; (u+0181) B with hook\r
+dkAcuteAccent.item("c") := "ć" ; (u+0107) c with acute\r
+dkAcuteAccent.item("C") := "Ć" ; (u+0106) C with acute\r
+dkAcuteAccent.item("ç") := "ḉ" ; (u+1e09) c with cedilla and acute\r
+dkAcuteAccent.item("Ç") := "Ḉ" ; (u+1e08) C with cedilla and acute\r
+dkAcuteAccent.item("d") := "ɗ" ; (u+0257) d with hook\r
+dkAcuteAccent.item("D") := "Ɗ" ; (u+018a) D with hook\r
+dkAcuteAccent.item("e") := "é" ; (u+00e9) e with acute\r
+dkAcuteAccent.item("E") := "É" ; (u+00c9) E with acute\r
+dkAcuteAccent.item("f") := "ƒ" ; (u+0192) f with hook\r
+dkAcuteAccent.item("F") := "Ƒ" ; (u+0191) F with hook\r
+dkAcuteAccent.item("g") := "ǵ" ; (u+01f5) g with acute\r
+dkAcuteAccent.item("G") := "Ǵ" ; (u+01f4) G with acute\r
+dkAcuteAccent.item("h") := "ɦ" ; (u+0266) h with hook\r
+dkAcuteAccent.item("H") := "Ɦ" ; (u+a7aa) H with hook\r
+dkAcuteAccent.item("i") := "í" ; (u+00ed) i with acute\r
+dkAcuteAccent.item("I") := "Í" ; (u+00cd) I with acute\r
+dkAcuteAccent.item("j") := "ij" ; (u+0133) ligature ij\r
+dkAcuteAccent.item("J") := "IJ" ; (u+0132) ligature IJ\r
+dkAcuteAccent.item("k") := "ƙ" ; (u+0199) k with hook\r
+dkAcuteAccent.item("K") := "Ƙ" ; (u+0198) K with hook\r
+dkAcuteAccent.item("l") := "ĺ" ; (u+013a) l with acute\r
+dkAcuteAccent.item("L") := "Ĺ" ; (u+0139) L with acute\r
+dkAcuteAccent.item("m") := "ḿ" ; (u+1e3f) m with acute\r
+dkAcuteAccent.item("M") := "Ḿ" ; (u+1e3e) M with acute\r
+dkAcuteAccent.item("n") := "ń" ; (u+0144) n with acute\r
+dkAcuteAccent.item("N") := "Ń" ; (u+0143) N with acute\r
+dkAcuteAccent.item("o") := "ó" ; (u+00f3) o with acute\r
+dkAcuteAccent.item("O") := "Ó" ; (u+00d3) O with acute\r
+dkAcuteAccent.item("ö") := "ő" ; (u+0151) o with double acute\r
+dkAcuteAccent.item("Ö") := "Ő" ; (u+0150) O with double acute\r
+dkAcuteAccent.item("p") := "ƥ" ; (u+01a5) p with hook\r
+dkAcuteAccent.item("P") := "Ƥ" ; (u+01a4) P with hook\r
+dkAcuteAccent.item("q") := "ɋ" ; (u+024b) q with hook tail\r
+dkAcuteAccent.item("Q") := "Ɋ" ; (u+024a) Q with hook tail\r
+dkAcuteAccent.item("r") := "ŕ" ; (u+0155) r with acute\r
+dkAcuteAccent.item("R") := "Ŕ" ; (u+0154) R with acute\r
+dkAcuteAccent.item("s") := "ś" ; (u+015b) s with acute\r
+dkAcuteAccent.item("S") := "Ś" ; (u+015a) S with acute\r
+dkAcuteAccent.item("t") := "ƭ" ; (u+01ad) t with hook\r
+dkAcuteAccent.item("T") := "Ƭ" ; (u+01ac) T with hook\r
+dkAcuteAccent.item("u") := "ú" ; (u+00fa) u with acute\r
+dkAcuteAccent.item("U") := "Ú" ; (u+00da) U with acute\r
+dkAcuteAccent.item("ü") := "ű" ; (u+0171) u with double acute\r
+dkAcuteAccent.item("Ü") := "Ű" ; (u+0170) U with double acute\r
+dkAcuteAccent.item("v") := "ʋ" ; (u+028b) v with hook\r
+dkAcuteAccent.item("V") := "Ʋ" ; (u+01b2) V with hook\r
+dkAcuteAccent.item("w") := "ẃ" ; (u+1e83) w with acute\r
+dkAcuteAccent.item("W") := "Ẃ" ; (u+1e82) W with acute\r
+dkAcuteAccent.item("y") := "ý" ; (u+00fd) y with acute\r
+dkAcuteAccent.item("Y") := "Ý" ; (u+00dd) Y with acute\r
+dkAcuteAccent.item("z") := "ź" ; (u+017a) z with acute\r
+dkAcuteAccent.item("Z") := "Ź" ; (u+0179) Z with acute\r
+dkAcuteAccent.item("å") := "ǻ" ; (u+01fb) a with ring above and acute\r
+dkAcuteAccent.item("Å") := "Ǻ" ; (u+01fa) A with ring above and acute\r
+dkAcuteAccent.item("æ") := "ǽ" ; (u+01fd) ae with acute\r
+dkAcuteAccent.item("Æ") := "Ǽ" ; (u+01fc) AE with acute\r
+dkAcuteAccent.item("ø") := "ǿ" ; (u+01ff) o with stroke and acute\r
+dkAcuteAccent.item("Ø") := "Ǿ" ; (u+01fe) O with stroke and acute\r
+dkAcuteAccent.item("2") := "♫" ; (u+266b) beamed eighth notes\r
+dkAcuteAccent.item("3") := "⁂" ; (u+2042) asterism\r
+dkAcuteAccent.item("4") := "★" ; (u+2605) black star\r
+dkAcuteAccent.item("5") := "☆" ; (u+2606) white star\r
+dkAcuteAccent.item("6") := "✽" ; (u+273d) heavy teardrop-spoked asterisk\r
+dkAcuteAccent.item("7") := "✻" ; (u+273b) teardrop-spoked asterisk\r
+dkAcuteAccent.item("8") := "♪" ; (u+266a) eighth note\r
+dkAcuteAccent.item("'") := "´" ; (u+00b4) acute accent\r
+dkAcuteAccent.item(" ") := "´" ; (u+00b4) acute accent\r
+\r
+\r
+; Dead Key : Diaeresis\r
+\r
+dkDiaeresis := ComObjCreate("Scripting.Dictionary")\r
+dkDiaeresis.item("a") := "ä" ; (u+00e4) a with diaeresis\r
+dkDiaeresis.item("A") := "Ä" ; (u+00c4) A with diaeresis\r
+dkDiaeresis.item("e") := "ë" ; (u+00eb) e with diaeresis\r
+dkDiaeresis.item("E") := "Ë" ; (u+00cb) E with diaeresis\r
+dkDiaeresis.item("h") := "ḧ" ; (u+1e27) h with diaeresis\r
+dkDiaeresis.item("H") := "Ḧ" ; (u+1e26) H with diaeresis\r
+dkDiaeresis.item("i") := "ï" ; (u+00ef) i with diaeresis\r
+dkDiaeresis.item("I") := "Ï" ; (u+00cf) I with diaeresis\r
+dkDiaeresis.item("o") := "ö" ; (u+00f6) o with diaeresis\r
+dkDiaeresis.item("O") := "Ö" ; (u+00d6) O with diaeresis\r
+dkDiaeresis.item("s") := "ß" ; (u+00df) small sharp s (Eszett)\r
+dkDiaeresis.item("S") := "ẞ" ; (u+1e9e) capital sharp S (capital Eszett)\r
+dkDiaeresis.item("t") := "ẗ" ; (u+1e97) t with diaeresis\r
+dkDiaeresis.item("u") := "ü" ; (u+00fc) u with diaeresis\r
+dkDiaeresis.item("U") := "Ü" ; (u+00dc) U with diaeresis\r
+dkDiaeresis.item("w") := "ẅ" ; (u+1e85) w with diaeresis\r
+dkDiaeresis.item("W") := "Ẅ" ; (u+1e84) W with diaeresis\r
+dkDiaeresis.item("x") := "ẍ" ; (u+1e8d) x with diaeresis\r
+dkDiaeresis.item("X") := "Ẍ" ; (u+1e8c) X with diaeresis\r
+dkDiaeresis.item("y") := "ÿ" ; (u+00ff) y with diaeresis\r
+dkDiaeresis.item("Y") := "Ÿ" ; (u+0178) Y with diaeresis\r
+dkDiaeresis.item("""") := "¨" ; (u+00a8) diaeresis\r
+dkDiaeresis.item(" ") := "¨" ; (u+00a8) diaeresis\r
+\r
+\r
+; Dead Key : Grave Accent\r
+\r
+dkGraveAccent := ComObjCreate("Scripting.Dictionary")\r
+dkGraveAccent.item("a") := "à" ; (u+00e0) a with grave\r
+dkGraveAccent.item("A") := "À" ; (u+00c0) A with grave\r
+dkGraveAccent.item("e") := "è" ; (u+00e8) e with grave\r
+dkGraveAccent.item("E") := "È" ; (u+00c8) E with grave\r
+dkGraveAccent.item("i") := "ì" ; (u+00ec) i with grave\r
+dkGraveAccent.item("I") := "Ì" ; (u+00cc) I with grave\r
+dkGraveAccent.item("n") := "ǹ" ; (u+01f9) n with grave\r
+dkGraveAccent.item("N") := "Ǹ" ; (u+01f8) N with grave\r
+dkGraveAccent.item("o") := "ò" ; (u+00f2) o with grave\r
+dkGraveAccent.item("O") := "Ò" ; (u+00d2) O with grave\r
+dkGraveAccent.item("u") := "ù" ; (u+00f9) u with grave\r
+dkGraveAccent.item("U") := "Ù" ; (u+00d9) U with grave\r
+dkGraveAccent.item("w") := "ẁ" ; (u+1e81) w with grave\r
+dkGraveAccent.item("W") := "Ẁ" ; (u+1e80) W with grave\r
+dkGraveAccent.item("y") := "ỳ" ; (u+1ef3) y with grave\r
+dkGraveAccent.item("Y") := "Ỳ" ; (u+1ef2) Y with grave\r
+dkGraveAccent.item("ä") := "₳" ; (u+20b3) Argentine austral\r
+dkGraveAccent.item("Ä") := "₳" ; (u+20b3) Argentine austral\r
+dkGraveAccent.item("b") := "₿" ; (u+20bf) bitcoin\r
+dkGraveAccent.item("B") := "₿" ; (u+20bf) bitcoin\r
+dkGraveAccent.item("c") := "₡" ; (u+20a1) Costa Rican colón\r
+dkGraveAccent.item("C") := "₵" ; (u+20b5) Ghanaian cedi\r
+dkGraveAccent.item("ç") := "₢" ; (u+20a2) Brazilian cruzeiro\r
+dkGraveAccent.item("Ç") := "₢" ; (u+20a2) Brazilian cruzeiro\r
+dkGraveAccent.item("d") := "₫" ; (u+20ab) Vietnamese dong\r
+dkGraveAccent.item("D") := "₯" ; (u+20af) Greek drachma\r
+dkGraveAccent.item("f") := "₣" ; (u+20a3) French franc\r
+dkGraveAccent.item("F") := "₣" ; (u+20a3) French franc\r
+dkGraveAccent.item("g") := "₲" ; (u+20b2) Paraguayan guaraní\r
+dkGraveAccent.item("G") := "₲" ; (u+20b2) Paraguayan guaraní\r
+dkGraveAccent.item("h") := "₴" ; (u+20b4) Ukrainian hryvnia\r
+dkGraveAccent.item("H") := "₴" ; (u+20b4) Ukrainian hryvnia\r
+dkGraveAccent.item("k") := "₭" ; (u+20ad) Laotian kip\r
+dkGraveAccent.item("K") := "₭" ; (u+20ad) Laotian kip\r
+dkGraveAccent.item("l") := "₺" ; (u+20ba) Turkish lira\r
+dkGraveAccent.item("L") := "₾" ; (u+20be) Georgian lari\r
+dkGraveAccent.item("ø") := "₤" ; (u+20a4) lira\r
+dkGraveAccent.item("Ø") := "₶" ; (u+20b6) livre tournois\r
+dkGraveAccent.item("m") := "₼" ; (u+20bc) Azerbaijani manat\r
+dkGraveAccent.item("M") := "₥" ; (u+20a5) mill sign\r
+dkGraveAccent.item("ñ") := "₦" ; (u+20a6) Nigerian naira\r
+dkGraveAccent.item("Ñ") := "₦" ; (u+20a6) Nigerian naira\r
+dkGraveAccent.item("p") := "₱" ; (u+20b1) Philippine peso\r
+dkGraveAccent.item("P") := "₱" ; (u+20b1) Philippine peso\r
+dkGraveAccent.item("r") := "₹" ; (u+20b9) Indian rupee\r
+dkGraveAccent.item("R") := "₽" ; (u+20bd) Russian ruble\r
+dkGraveAccent.item("s") := "₪" ; (u+20aa) Israeli new shekel\r
+dkGraveAccent.item("S") := "₷" ; (u+20b7) spesmilo\r
+dkGraveAccent.item("t") := "₮" ; (u+20ae) Mongolian tögrög (tugrik)\r
+dkGraveAccent.item("T") := "₸" ; (u+20b8) Kazakh tenge\r
+dkGraveAccent.item("å") := "₩" ; (u+20a9) South Korean won\r
+dkGraveAccent.item("Å") := "₩" ; (u+20a9) South Korean won\r
+dkGraveAccent.item("1") := " " ; (u+2002) en space\r
+dkGraveAccent.item("2") := " " ; (u+2003) em space\r
+dkGraveAccent.item("3") := " " ; (u+2004) three-per-em space\r
+dkGraveAccent.item("4") := " " ; (u+2005) four-per-em space\r
+dkGraveAccent.item("5") := " " ; (u+2008) punctuation space\r
+dkGraveAccent.item("6") := " " ; (u+2006) six-per-em space\r
+dkGraveAccent.item("7") := " " ; (u+2009) thin space\r
+dkGraveAccent.item("8") := " " ; (u+200a) hair space\r
+dkGraveAccent.item("9") := " " ; (u+2007) figure space\r
+dkGraveAccent.item("0") := "" ; (u+200b) zero-width space\r
+dkGraveAccent.item("-") := " " ; (u+00a0) non-breaking space\r
+dkGraveAccent.item("=") := " " ; (u+202f) narrow no-break space\r
+dkGraveAccent.item("!") := " " ; (u+2000) en quad\r
+dkGraveAccent.item("@") := " " ; (u+2001) em quad\r
+dkGraveAccent.item("``") := "``" ; (u+0060) grave accent\r
+dkGraveAccent.item(" ") := "``" ; (u+0060) grave accent\r
+\r
+\r
+; Dead Key : Tilde\r
+\r
+dkTilde := ComObjCreate("Scripting.Dictionary")\r
+dkTilde.item("a") := "ã" ; (u+00e3) a with tilde\r
+dkTilde.item("A") := "Ã" ; (u+00c3) A with tilde\r
+dkTilde.item("e") := "ẽ" ; (u+1ebd) e with tilde\r
+dkTilde.item("E") := "Ẽ" ; (u+1ebc) E with tilde\r
+dkTilde.item("i") := "ĩ" ; (u+0129) i with tilde\r
+dkTilde.item("I") := "Ĩ" ; (u+0128) I with tilde\r
+dkTilde.item("n") := "ñ" ; (u+00f1) n with tilde\r
+dkTilde.item("N") := "Ñ" ; (u+00d1) N with tilde\r
+dkTilde.item("o") := "õ" ; (u+00f5) o with tilde\r
+dkTilde.item("O") := "Õ" ; (u+00d5) O with tilde\r
+dkTilde.item("u") := "ũ" ; (u+0169) u with tilde\r
+dkTilde.item("U") := "Ũ" ; (u+0168) U with tilde\r
+dkTilde.item("v") := "ṽ" ; (u+1e7d) v with tilde\r
+dkTilde.item("V") := "Ṽ" ; (u+1e7c) V with tilde\r
+dkTilde.item("y") := "ỹ" ; (u+1ef9) y with tilde\r
+dkTilde.item("Y") := "Ỹ" ; (u+1ef8) Y with tilde\r
+dkTilde.item("~") := "~" ; (u+007e) tilde\r
+dkTilde.item(" ") := "~" ; (u+007e) tilde\r
+\r
+\r
+; Dead Key : Not Sign\r
+\r
+dkNotSign := ComObjCreate("Scripting.Dictionary")\r
+dkNotSign.item("a") := "ª" ; (u+00aa) feminine ordinal indicator (Spanish, Portuguese, Italian, Galician)\r
+dkNotSign.item("A") := "ª" ; (u+00aa) feminine ordinal indicator (Spanish, Portuguese, Italian, Galician)\r
+dkNotSign.item("ä") := "⅍" ; (u+214d) aktieselskab\r
+dkNotSign.item("Ä") := "⅍" ; (u+214d) aktieselskab\r
+dkNotSign.item("b") := "☐" ; (u+2610) ballot box\r
+dkNotSign.item("B") := "☒" ; (u+2612) ballot box with x\r
+dkNotSign.item("c") := "©" ; (u+00a9) copyright sign\r
+dkNotSign.item("C") := "¤" ; (u+00a4) currency sign\r
+dkNotSign.item("ç") := "℅" ; (u+2105) care of\r
+dkNotSign.item("Ç") := "℅" ; (u+2105) care of\r
+dkNotSign.item("d") := "†" ; (u+2020) dagger\r
+dkNotSign.item("D") := "‡" ; (u+2021) double dagger\r
+dkNotSign.item("e") := "…" ; (u+2026) horizontal ellipsis\r
+dkNotSign.item("E") := "℮" ; (u+212e) estimated symbol\r
+dkNotSign.item("f") := "♀" ; (u+2640) Venus symbol (female)\r
+dkNotSign.item("F") := "♀" ; (u+2640) Venus symbol (female)\r
+dkNotSign.item("h") := "♡" ; (u+2661) white heart suit\r
+dkNotSign.item("H") := "♥" ; (u+2665) black heart suit\r
+dkNotSign.item("l") := "ℓ" ; (u+2113) script small l\r
+dkNotSign.item("L") := "ℓ" ; (u+2113) script small l\r
+dkNotSign.item("m") := "♂" ; (u+2642) Mars symbol (male)\r
+dkNotSign.item("M") := "♂" ; (u+2642) Mars symbol (male)\r
+dkNotSign.item("n") := "¬" ; (u+00ac) not sign\r
+dkNotSign.item("N") := "¬" ; (u+00ac) not sign\r
+dkNotSign.item("o") := "º" ; (u+00ba) masculine ordinal indicator (Spanish, Portuguese, Italian, Galician)\r
+dkNotSign.item("O") := "º" ; (u+00ba) masculine ordinal indicator (Spanish, Portuguese, Italian, Galician)\r
+dkNotSign.item("ö") := "Ω" ; (u+2126) ohm sign (backwards compatibility)\r
+dkNotSign.item("Ö") := "Ω" ; (u+2126) ohm sign (backwards compatibility)\r
+dkNotSign.item("p") := "¶" ; (u+00b6) pilcrow sign\r
+dkNotSign.item("P") := "℗" ; (u+2117) sound recording copyright\r
+dkNotSign.item("r") := "®" ; (u+00ae) registered sign\r
+dkNotSign.item("R") := "®" ; (u+00ae) registered sign\r
+dkNotSign.item("s") := "§" ; (u+00a7) section sign\r
+dkNotSign.item("S") := "℠" ; (u+2120) service mark\r
+dkNotSign.item("t") := "™" ; (u+2122) trademark symbol\r
+dkNotSign.item("T") := "™" ; (u+2122) trademark symbol\r
+dkNotSign.item("v") := "✓" ; (u+2713) check mark\r
+dkNotSign.item("V") := "✔" ; (u+2714) heavy check mark\r
+dkNotSign.item("w") := "☑" ; (u+2611) ballot box with check\r
+dkNotSign.item("W") := "☙" ; (u+2619) reversed rotated floral heart bullet\r
+dkNotSign.item("x") := "✗" ; (u+2717) ballot x\r
+dkNotSign.item("X") := "✘" ; (u+2718) heavy ballot x\r
+dkNotSign.item("y") := "☺" ; (u+263a) white smiling face\r
+dkNotSign.item("Y") := "☻" ; (u+263b) black smiling face\r
+dkNotSign.item("1") := "←" ; (u+2190) leftwards arrow\r
+dkNotSign.item("2") := "↓" ; (u+2193) downwards arrow\r
+dkNotSign.item("3") := "↑" ; (u+2191) upwards arrow\r
+dkNotSign.item("4") := "→" ; (u+2192) rightwards arrow\r
+dkNotSign.item("5") := "↖" ; (u+2196) north west arrow\r
+dkNotSign.item("6") := "↙" ; (u+2199) south west arrow\r
+dkNotSign.item("7") := "↗" ; (u+2197) north east arrow\r
+dkNotSign.item("8") := "↘" ; (u+2198) south east arrow\r
+dkNotSign.item("9") := "↕" ; (u+2195) up down arrow\r
+dkNotSign.item("0") := "↨" ; (u+21a8) up down arrow with base\r
+dkNotSign.item("=") := "↔" ; (u+2194) left right arrow\r
+dkNotSign.item("!") := "⇐" ; (u+21d0) leftwards double arrow\r
+dkNotSign.item("@") := "⇓" ; (u+21d3) downwards double arrow\r
+dkNotSign.item("#") := "⇑" ; (u+21d1) upwards double arrow\r
+dkNotSign.item("$") := "⇒" ; (u+21d2) rightwards double arrow\r
+dkNotSign.item("%") := "⇖" ; (u+21d6) north west double arrow\r
+dkNotSign.item("^") := "⇙" ; (u+21d9) south west double arrow\r
+dkNotSign.item("&") := "⇗" ; (u+21d7) north east double arrow\r
+dkNotSign.item("*") := "⇘" ; (u+21d8) south east double arrow\r
+dkNotSign.item("(") := "⇕" ; (u+21d5) up down double arrow\r
+dkNotSign.item(")") := "↲" ; (u+21b2) downwards arrow with tip leftwards\r
+dkNotSign.item("+") := "⇔" ; (u+21d4) left right double arrow\r
+dkNotSign.item(".") := "•" ; (u+2022) bullet\r
+dkNotSign.item("-") := "⁃" ; (u+2043) hyphen bullet\r
+dkNotSign.item("/") := "‼" ; (u+203c) double exclamation mark\r
+dkNotSign.item("?") := "‽" ; (u+203a) interrobang\r
+dkNotSign.item("¿") := "⸘" ; (u+2e18) inverted interrobang\r
+dkNotSign.item("¶") := "⸮" ; (u+2e2e) reversed question mark\r
+dkNotSign.item("\") := "⁞" ; (u+205e) vertical four dots\r
+dkNotSign.item("|") := "⁞" ; (u+205e) vertical four dots\r
+dkNotSign.item(" ") := "¬" ; (u+00ac) not sign\r
+\r
+\r
+; Dead Key : Broken Bar\r
+\r
+dkBrokenBar := ComObjCreate("Scripting.Dictionary")\r
+dkBrokenBar.item("a") := "ɑ" ; (u+0251) latin small letter alpha\r
+dkBrokenBar.item("A") := "Ɑ" ; (u+2c6d) latin capital letter alpha\r
+dkBrokenBar.item("ä") := "ɒ" ; (u+0252) latin small letter turned alpha\r
+dkBrokenBar.item("Ä") := "Ɒ" ; (u+2c70) latin capital letter turned alpha\r
+dkBrokenBar.item("c") := "ƈ" ; (u+0188) c with hook\r
+dkBrokenBar.item("C") := "Ƈ" ; (u+0187) C with hook\r
+dkBrokenBar.item("e") := "ɛ" ; (u+025b) small open e (latin small epsilon)\r
+dkBrokenBar.item("E") := "Ɛ" ; (u+0190) capital open E (latin capital epsilon)\r
+dkBrokenBar.item("f") := "❦" ; (u+2766) floral heart\r
+dkBrokenBar.item("F") := "❧" ; (u+2767) rotated floral heart bullet\r
+dkBrokenBar.item("g") := "ɠ" ; (u+0260) g with hook\r
+dkBrokenBar.item("G") := "Ɠ" ; (u+0193) G with hook\r
+dkBrokenBar.item("h") := "ꜧ" ; (u+a727) small letter heng\r
+dkBrokenBar.item("H") := "Ꜧ" ; (u+a726) capital letter heng\r
+dkBrokenBar.item("ù") := "ɧ" ; (u+0267) small letter heng with hook\r
+dkBrokenBar.item("k") := "ḱ" ; (u+1e31) k with acute\r
+dkBrokenBar.item("K") := "Ḱ" ; (u+1e30) K with acute\r
+dkBrokenBar.item("m") := "ɱ" ; (u+0271) m with hook\r
+dkBrokenBar.item("M") := "Ɱ" ; (u+2c6e) M with hook\r
+dkBrokenBar.item("n") := "ɲ" ; (u+0272) n with left hook\r
+dkBrokenBar.item("N") := "Ɲ" ; (u+019d) N with left hook\r
+dkBrokenBar.item("o") := "ơ" ; (u+01a1) o with horn\r
+dkBrokenBar.item("O") := "Ơ" ; (u+01a0) O with horn\r
+dkBrokenBar.item("p") := "ṕ" ; (u+1e55) p with acute\r
+dkBrokenBar.item("P") := "Ṕ" ; (u+1e54) P with acute\r
+dkBrokenBar.item("r") := "ɽ" ; (u+027d) r with tail\r
+dkBrokenBar.item("R") := "Ɽ" ; (u+2c64) R with tail\r
+dkBrokenBar.item("s") := "ʃ" ; (u+0283) small letter esh\r
+dkBrokenBar.item("S") := "Ʃ" ; (u+01a9) capital letter esh\r
+dkBrokenBar.item("ß") := "ſ" ; (u+017f) small long s\r
+dkBrokenBar.item("u") := "ư" ; (u+01b0) u with horn\r
+dkBrokenBar.item("U") := "Ư" ; (u+01af) U with horn\r
+dkBrokenBar.item("v") := "ʌ" ; (u+028c) latin small letter turned v\r
+dkBrokenBar.item("V") := "Ʌ" ; (u+0245) latin capital letter turned V\r
+dkBrokenBar.item("w") := "ⱳ" ; (u+2c73) w with hook\r
+dkBrokenBar.item("W") := "Ⱳ" ; (u+2c72) W with hook\r
+dkBrokenBar.item("y") := "ƴ" ; (u+01b4) y with hook\r
+dkBrokenBar.item("Y") := "Ƴ" ; (u+01b3) Y with hook\r
+dkBrokenBar.item("z") := "ȥ" ; (u+0225) z with hook\r
+dkBrokenBar.item("Z") := "Ȥ" ; (u+0224) Z with hook\r
+dkBrokenBar.item("1") := "№" ; (u+2116) numero sign\r
+dkBrokenBar.item("2") := "½" ; (u+00bd) vulgar fraction 1/2\r
+dkBrokenBar.item("3") := "⅓" ; (u+2153) vulgar fraction 1/3\r
+dkBrokenBar.item("4") := "¼" ; (u+00bc) vulgar fraction 1/4\r
+dkBrokenBar.item("5") := "⅔" ; (u+2154) vulgar fraction 2/3\r
+dkBrokenBar.item("6") := "¾" ; (u+00be) vulgar fraction 3/4\r
+dkBrokenBar.item("7") := "⅛" ; (u+215b) vulgar fraction 1/8\r
+dkBrokenBar.item("8") := "⅜" ; (u+215c) vulgar fraction 3/8\r
+dkBrokenBar.item("9") := "⅝" ; (u+215d) vulgar fraction 5/8\r
+dkBrokenBar.item("0") := "⅞" ; (u+215e) vulgar fraction 7/8\r
+dkBrokenBar.item("\") := "¦" ; (u+00a6) broken bar\r
+dkBrokenBar.item("|") := "¦" ; (u+00a6) broken bar\r
+dkBrokenBar.item(" ") := "¦" ; (u+00a6) broken bar\r
+\r
+\r
+; Dead Key : Greek Alphabet\r
+\r
+dkGreekAlphabet := ComObjCreate("Scripting.Dictionary")\r
+dkGreekAlphabet.item("a") := "α" ; (u+03b1) small alpha\r
+dkGreekAlphabet.item("A") := "Α" ; (u+0391) capital alpha\r
+dkGreekAlphabet.item("b") := "β" ; (u+03b2) small beta\r
+dkGreekAlphabet.item("B") := "Β" ; (u+0392) capital beta\r
+dkGreekAlphabet.item("v") := "β" ; (u+03b2) small beta\r
+dkGreekAlphabet.item("V") := "Β" ; (u+0392) capital beta\r
+dkGreekAlphabet.item("g") := "γ" ; (u+03b3) small gamma\r
+dkGreekAlphabet.item("G") := "Γ" ; (u+0393) capital gamma\r
+dkGreekAlphabet.item("d") := "δ" ; (u+03b4) small delta\r
+dkGreekAlphabet.item("D") := "Δ" ; (u+0394) capital delta\r
+dkGreekAlphabet.item("e") := "ε" ; (u+03b5) small epsilon\r
+dkGreekAlphabet.item("E") := "Ε" ; (u+0395) capital epsilon\r
+dkGreekAlphabet.item("z") := "ζ" ; (u+03b6) small zeta\r
+dkGreekAlphabet.item("Z") := "Ζ" ; (u+0396) capital zeta\r
+dkGreekAlphabet.item("h") := "η" ; (u+03b7) small eta\r
+dkGreekAlphabet.item("H") := "Η" ; (u+0397) capital eta\r
+dkGreekAlphabet.item("j") := "θ" ; (u+03b8) small theta\r
+dkGreekAlphabet.item("J") := "Θ" ; (u+0398) capital theta\r
+dkGreekAlphabet.item("i") := "ι" ; (u+03b9) small iota\r
+dkGreekAlphabet.item("I") := "Ι" ; (u+0399) capital iota\r
+dkGreekAlphabet.item("k") := "κ" ; (u+03ba) small kappa\r
+dkGreekAlphabet.item("K") := "Κ" ; (u+039a) capital kappa\r
+dkGreekAlphabet.item("l") := "λ" ; (u+03bb) small lambda\r
+dkGreekAlphabet.item("L") := "Λ" ; (u+039b) capital lambda\r
+dkGreekAlphabet.item("m") := "μ" ; (u+03bc) small mu\r
+dkGreekAlphabet.item("M") := "Μ" ; (u+039c) capital mu\r
+dkGreekAlphabet.item("n") := "ν" ; (u+03bd) small nu\r
+dkGreekAlphabet.item("N") := "Ν" ; (u+039d) capital nu\r
+dkGreekAlphabet.item("x") := "ξ" ; (u+03be) small xi\r
+dkGreekAlphabet.item("X") := "Ξ" ; (u+039e) capital xi\r
+dkGreekAlphabet.item("o") := "ο" ; (u+03bf) small omicron\r
+dkGreekAlphabet.item("O") := "Ο" ; (u+039f) capital omicron\r
+dkGreekAlphabet.item("p") := "π" ; (u+03c0) small pi\r
+dkGreekAlphabet.item("P") := "Π" ; (u+03a0) capital pi\r
+dkGreekAlphabet.item("r") := "ρ" ; (u+03c1) small rho\r
+dkGreekAlphabet.item("R") := "Ρ" ; (u+03a1) capital rho\r
+dkGreekAlphabet.item("s") := "σ" ; (u+03c3) small sigma\r
+dkGreekAlphabet.item("S") := "Σ" ; (u+03a3) capital sigma\r
+dkGreekAlphabet.item(",") := "ς" ; (u+03c2) small sigma, in word-final position\r
+dkGreekAlphabet.item("ß") := "ς" ; (u+03c2) small sigma, in word-final position\r
+dkGreekAlphabet.item("t") := "τ" ; (u+03c4) small tau\r
+dkGreekAlphabet.item("T") := "Τ" ; (u+03a4) capital tau\r
+dkGreekAlphabet.item("u") := "υ" ; (u+03c5) small upsilon\r
+dkGreekAlphabet.item("U") := "Υ" ; (u+03a5) capital upsilon\r
+dkGreekAlphabet.item("y") := "υ" ; (u+03c5) small upsilon\r
+dkGreekAlphabet.item("Y") := "Υ" ; (u+03a5) capital upsilon\r
+dkGreekAlphabet.item("f") := "φ" ; (u+03c6) small phi\r
+dkGreekAlphabet.item("F") := "Φ" ; (u+03a6) capital phi\r
+dkGreekAlphabet.item("c") := "χ" ; (u+03c7) small chi\r
+dkGreekAlphabet.item("C") := "Χ" ; (u+03a7) capital chi\r
+dkGreekAlphabet.item("w") := "ψ" ; (u+03c8) small psi\r
+dkGreekAlphabet.item("W") := "Ψ" ; (u+03a8) capital psi\r
+dkGreekAlphabet.item("q") := "ω" ; (u+03c9) small omega\r
+dkGreekAlphabet.item("Q") := "Ω" ; (u+03a9) capital omega\r
+dkGreekAlphabet.item("1") := "¹" ; (u+00b9) superscript 1\r
+dkGreekAlphabet.item("2") := "²" ; (u+00b2) superscript 2\r
+dkGreekAlphabet.item("3") := "³" ; (u+00b3) superscript 3\r
+dkGreekAlphabet.item("4") := "⁴" ; (u+2074) superscript 4\r
+dkGreekAlphabet.item("5") := "⁵" ; (u+2075) superscript 5\r
+dkGreekAlphabet.item("6") := "⁶" ; (u+2076) superscript 6\r
+dkGreekAlphabet.item("7") := "⁷" ; (u+2077) superscript 7\r
+dkGreekAlphabet.item("8") := "⁸" ; (u+2078) superscript 8\r
+dkGreekAlphabet.item("9") := "⁹" ; (u+2079) superscript 9\r
+dkGreekAlphabet.item("0") := "⁰" ; (u+2070) superscript 0\r
+dkGreekAlphabet.item("-") := "⁻" ; (u+207b) superscript -\r
+dkGreekAlphabet.item("=") := "⁼" ; (u+207c) superscript =\r
+dkGreekAlphabet.item("+") := "⁺" ; (u+207a) superscript +\r
+dkGreekAlphabet.item("[") := "⁽" ; (u+207d) superscript (\r
+dkGreekAlphabet.item("]") := "⁾" ; (u+207e) superscript )\r
+dkGreekAlphabet.item("!") := "₁" ; (u+2081) subscript 1\r
+dkGreekAlphabet.item("@") := "₂" ; (u+2082) subscript 2\r
+dkGreekAlphabet.item("#") := "₃" ; (u+2083) subscript 3\r
+dkGreekAlphabet.item("$") := "₄" ; (u+2084) subscript 4\r
+dkGreekAlphabet.item("%") := "₅" ; (u+2085) subscript 5\r
+dkGreekAlphabet.item("^") := "₆" ; (u+2086) subscript 6\r
+dkGreekAlphabet.item("&") := "₇" ; (u+2087) subscript 7\r
+dkGreekAlphabet.item("*") := "₈" ; (u+2088) subscript 8\r
+dkGreekAlphabet.item("(") := "₉" ; (u+2089) subscript 9\r
+dkGreekAlphabet.item(")") := "₀" ; (u+2080) subscript 0\r
+dkGreekAlphabet.item(";") := "₋" ; (u+208b) subscript -\r
+dkGreekAlphabet.item("'") := "₌" ; (u+208c) subscript =\r
+dkGreekAlphabet.item("""") := "₊" ; (u+208a) subscript +\r
+dkGreekAlphabet.item("{") := "₍" ; (u+208d) subscript (\r
+dkGreekAlphabet.item("}") := "₎" ; (u+208e) subscript )\r
+dkGreekAlphabet.item(".") := "µ" ; (u+00b5) micro sign\r
+dkGreekAlphabet.item(" ") := "μ" ; (u+03bc) small mu\r
+\r
+\r
+; Dead Key : Math Symbols\r
+\r
+dkMathSymbols := ComObjCreate("Scripting.Dictionary")\r
+dkMathSymbols.item("a") := "∀" ; (u+2200) for all\r
+dkMathSymbols.item("A") := "∀" ; (u+2200) for all\r
+dkMathSymbols.item("b") := "⊆" ; (u+2286) subset of or equal to\r
+dkMathSymbols.item("B") := "⊇" ; (u+2287) superset of or equal to\r
+dkMathSymbols.item("c") := "∝" ; (u+221d) proportional to\r
+dkMathSymbols.item("C") := "ℂ" ; (u+2102) complex numbers\r
+dkMathSymbols.item("d") := "∆" ; (u+2206) increment operator\r
+dkMathSymbols.item("D") := "∇" ; (u+2207) nable/del operator\r
+dkMathSymbols.item("e") := "∃" ; (u+2203) there exists\r
+dkMathSymbols.item("E") := "∄" ; (u+2204) there does not exist\r
+dkMathSymbols.item("f") := "ƒ" ; (u+0192) f with hook\r
+dkMathSymbols.item("F") := "∎" ; (u+220e) end of proof\r
+dkMathSymbols.item("g") := "⊂" ; (u+2282) subset of\r
+dkMathSymbols.item("G") := "⊄" ; (u+2284) not a subset of\r
+dkMathSymbols.item("h") := "⊃" ; (u+2283) superset of\r
+dkMathSymbols.item("H") := "⊅" ; (u+2285) not a superset of\r
+dkMathSymbols.item("i") := "∞" ; (u+221e) infinity symbol\r
+dkMathSymbols.item("I") := "∞" ; (u+221e) infinity symbol\r
+dkMathSymbols.item("k") := "∋" ; (u+220b) contains as member\r
+dkMathSymbols.item("K") := "∌" ; (u+220c) does not contain as member\r
+dkMathSymbols.item("l") := "∥" ; (u+2225) parallel to\r
+dkMathSymbols.item("L") := "∦" ; (u+2226) not parallel to\r
+dkMathSymbols.item("m") := "∈" ; (u+2208) element of\r
+dkMathSymbols.item("M") := "∉" ; (u+2209) not an element of\r
+dkMathSymbols.item("n") := "ⁿ" ; (u+207f) superscript n\r
+dkMathSymbols.item("N") := "ℕ" ; (u+2115) natural numbers\r
+dkMathSymbols.item("o") := "∘" ; (u+2218) ring operator\r
+dkMathSymbols.item("O") := "∅" ; (u+2205) empty set\r
+dkMathSymbols.item("p") := "∂" ; (u+2202) partial differential\r
+dkMathSymbols.item("P") := "ℙ" ; (u+2119) prime numbers\r
+dkMathSymbols.item("q") := "ℚ" ; (u+211a) rational numbers\r
+dkMathSymbols.item("Q") := "ℚ" ; (u+211a) rational numbers\r
+dkMathSymbols.item("r") := "√" ; (u+221a) square root\r
+dkMathSymbols.item("R") := "ℝ" ; (u+211d) real numbers\r
+dkMathSymbols.item("s") := "∩" ; (u+2229) set intersection\r
+dkMathSymbols.item("S") := "∫" ; (u+222b) integral symbol\r
+dkMathSymbols.item("u") := "∪" ; (u+222a) set union\r
+dkMathSymbols.item("U") := "∖" ; (u+2216) set minus\r
+dkMathSymbols.item("w") := "℘" ; (u+2118) Weierstrass elliptic function\r
+dkMathSymbols.item("W") := "℘" ; (u+2118) Weierstrass elliptic function\r
+dkMathSymbols.item("z") := "↯" ; (u+21af) downwards zigzag arrow\r
+dkMathSymbols.item("Z") := "ℤ" ; (u+2124) whole numbers\r
+dkMathSymbols.item("1") := "≠" ; (u+2260) not equal to\r
+dkMathSymbols.item("!") := "≠" ; (u+2260) not equal to\r
+dkMathSymbols.item("2") := "√" ; (u+221a) square root\r
+dkMathSymbols.item("3") := "∛" ; (u+221b) cube root\r
+dkMathSymbols.item("4") := "∜" ; (u+221c) fourth root\r
+dkMathSymbols.item("5") := "‰" ; (u+2030) per mille sign\r
+dkMathSymbols.item("%") := "‱" ; (u+2031) per ten thousand sign\r
+dkMathSymbols.item("6") := "∠" ; (u+2220) angle symbol\r
+dkMathSymbols.item("7") := "∧" ; (u+2227) logical and\r
+dkMathSymbols.item("&") := "∧" ; (u+2227) logical and\r
+dkMathSymbols.item("8") := "⊗" ; (u+2297) tensor product\r
+dkMathSymbols.item("*") := "⊗" ; (u+2297) tensor product\r
+dkMathSymbols.item("9") := "∟" ; (u+221f) right angle\r
+dkMathSymbols.item("0") := "∡" ; (u+2221) measured angle\r
+dkMathSymbols.item("``") := "≈" ; (u+2248) almost equal to\r
+dkMathSymbols.item("~") := "≈" ; (u+2248) almost equal to\r
+dkMathSymbols.item(",") := "≤" ; (u+2264) less-than or equal to\r
+dkMathSymbols.item("<") := "≤" ; (u+2264) less-than or equal to\r
+dkMathSymbols.item(".") := "≥" ; (u+2265) greater-than or equal to\r
+dkMathSymbols.item(">") := "≥" ; (u+2265) greater-than or equal to\r
+dkMathSymbols.item("-") := "±" ; (u+00b1) plus-minus sign\r
+dkMathSymbols.item("_") := "⊖" ; (u+2296) circled minus\r
+dkMathSymbols.item("=") := "≝" ; (u+225d) equal to by definition\r
+dkMathSymbols.item("+") := "⊕" ; (u+2295) exclusive or\r
+dkMathSymbols.item(";") := "∵" ; (u+2235) because sign\r
+dkMathSymbols.item(":") := "∴" ; (u+2234) therefore sign\r
+dkMathSymbols.item("'") := "′" ; (u+2032) prime\r
+dkMathSymbols.item("""") := "″" ; (u+2033) double prime\r
+dkMathSymbols.item("/") := "‴" ; (u+2034) triple prime\r
+dkMathSymbols.item("?") := "⁗" ; (u+2057) quadruple prime\r
+dkMathSymbols.item("\") := "∨" ; (u+2228) logical or\r
+dkMathSymbols.item("|") := "∨" ; (u+2228) logical or\r
+dkMathSymbols.item(" ") := "√" ; (u+221a) square root\r
+\r
+\r
+; Configuration : Right Alt on US QWERTY\r
+\r
+>!a::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send Ä ; (u+00c4) A with diaeresis\r
+ else\r
+ Send ä ; (u+00e4) a with diaeresis\r
+return\r
+>!+a::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send ä ; (u+00e4) a with diaeresis\r
+ else\r
+ Send Ä ; (u+00c4) A with diaeresis\r
+return\r
+\r
+>!z::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send À ; (u+00c0) A with grave\r
+ else\r
+ Send à ; (u+00e0) a with grave\r
+return\r
+>!+z::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send à ; (u+00e0) a with grave\r
+ else\r
+ Send À ; (u+00c0) A with grave\r
+return\r
+\r
+>!x::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send Á ; (u+00c1) A with acute\r
+ else\r
+ Send á ; (u+00e1) a with acute\r
+return\r
+>!+x::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send á ; (u+00e1) a with acute\r
+ else\r
+ Send Á ; (u+00c1) A with acute\r
+return\r
+\r
+>!q::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send Æ ; (u+00c6) letter AE\r
+ else\r
+ Send æ ; (u+00e6) letter ae\r
+return\r
+>!+q::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send æ ; (u+00e6) letter ae\r
+ else\r
+ Send Æ ; (u+00c6) letter AE\r
+return\r
+\r
+>!w::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send Å ; (u+00c5) A with ring above\r
+ else\r
+ Send å ; (u+00e5) a with ring above\r
+return\r
+>!+w::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send å ; (u+00e5)a with ring above\r
+ else\r
+ Send Å ; (u+00c5) A with ring above\r
+return\r
+\r
+>!c::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send Ç ; (u+00c7) C with cedilla\r
+ else\r
+ Send ç ; (u+00e7) c with cedilla\r
+return\r
+>!+c::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send ç ; (u+00e7) c with cedilla\r
+ else\r
+ Send Ç ; (u+00c7) C with cedilla\r
+return\r
+\r
+>!d::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send Ð ; (u+00d0) capital letter eth\r
+ else\r
+ Send ð ; (u+00f0) small letter eth\r
+return\r
+>!+d::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send ð ; (u+00f0) small letter eth\r
+ else\r
+ Send Ð ; (u+00d0) capital letter eth\r
+return\r
+\r
+>!e::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send Ë ; (u+00cb) E with diaeresis\r
+ else\r
+ Send ë ; (u+00eb) e with diaeresis\r
+return\r
+>!+e::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send ë ; (u+00eb) e with diaeresis\r
+ else\r
+ Send Ë ; (u+00cb) E with diaeresis\r
+return\r
+\r
+>!f::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send È ; (u+00c8) E with grave\r
+ else\r
+ Send è ; (u+00e8) e with grave\r
+return\r
+>!+f::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send è ; (u+00e8) e with grave\r
+ else\r
+ Send È ; (u+00c8) E with grave\r
+return\r
+\r
+>!g::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send É ; (u+00c9) E with acute\r
+ else\r
+ Send é ; (u+00e9) e with acute\r
+return\r
+>!+g::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send é ; (u+00e9) e with acute\r
+ else\r
+ Send É ; (u+00c9) E with acute\r
+return\r
+\r
+>!i::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send Ï ; (u+00cf) I with diaeresis\r
+ else\r
+ Send ï ; (u+00ef) i with diaeresis\r
+return\r
+>!+i::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send ï ; (u+00ef) i with diaeresis\r
+ else\r
+ Send Ï ; (u+00cf) I with diaeresis\r
+return\r
+\r
+>!v::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send Ì ; (u+00cc) I with grave\r
+ else\r
+ Send ì ; (u+00ec) i with grave\r
+return\r
+>!+v::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send ì ; (u+00ec) i with grave\r
+ else\r
+ Send Ì ; (u+00cc) I with grave\r
+return\r
+\r
+>!b::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send Í ; (u+00cd) I with acute\r
+ else\r
+ Send í ; (u+00ed) i with acute\r
+return\r
+>!+b::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send í ; (u+00ed) i with acute\r
+ else\r
+ Send Í ; (u+00cd) I with acute\r
+return\r
+\r
+>!o::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send Ö ; (u+00d6) O with diaeresis\r
+ else\r
+ Send ö ; (u+00f6) o with diaeresis\r
+return\r
+>!+o::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send ö ; (u+00f6) o with diaeresis\r
+ else\r
+ Send Ö ; (u+00d6) O with diaeresis\r
+return\r
+\r
+>!,::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send Ò ; (u+00d2) O with grave\r
+ else\r
+ Send ò ; (u+00f2) o with grave\r
+return\r
+>!<::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send ò ; (u+00f2) o with grave\r
+ else\r
+ Send Ò ; (u+00d2) O with grave\r
+return\r
+\r
+>!.::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send Ó ; (u+00d3) O with acute\r
+ else\r
+ Send ó ; (u+00f3) o with acute\r
+return\r
+>!>::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send ó ; (u+00f3) o with acute\r
+ else\r
+ Send Ó ; (u+00d3) O with acute\r
+return\r
+\r
+>!k::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send Œ ; (u+0152) ligature OE\r
+ else\r
+ Send œ ; (u+0153) ligature oe\r
+return\r
+>!+k::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send œ ; (u+0153) ligature oe\r
+ else\r
+ Send Œ ; (u+0152) ligature OE\r
+return\r
+\r
+>!l::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send Ø ; (u+00d8) O with stroke\r
+ else\r
+ Send ø ; (u+00f8) o with stroke\r
+return\r
+>!+l::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send ø ; (u+00f8) o with stroke\r
+ else\r
+ Send Ø ; (u+00d8) O with stroke\r
+return\r
+\r
+>!n::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send Ñ ; (u+00d1) N with tilde\r
+ else\r
+ Send ñ ; (u+00f1) n with tilde\r
+return\r
+>!+n::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send ñ ; (u+00f1) n with tilde\r
+ else\r
+ Send Ñ ; (u+00d1) N with tilde\r
+return\r
+\r
+>!t::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send Þ ; (u+00de) capital letter thorn\r
+ else\r
+ Send þ ; (u+00fe) small letter thorn\r
+return\r
+>!+t::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send þ ; (u+00fe) small letter thorn\r
+ else\r
+ Send Þ ; (u+00de) capital letter thorn\r
+return\r
+\r
+>!u::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send Ü ; (u+00dc) U with diaeresis\r
+ else\r
+ Send ü ; (u+00fc) u with diaeresis\r
+return\r
+>!+u::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send ü ; (u+00fc) u with diaeresis\r
+ else\r
+ Send Ü ; (u+00dc) U with diaeresis\r
+return\r
+\r
+>!h::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send Ù ; (u+00d9) U with grave\r
+ else\r
+ Send ù ; (u+00f9) u with grave\r
+return\r
+>!+h::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send ù ; (u+00f9) u with grave\r
+ else\r
+ Send Ù ; (u+00d9) U with grave\r
+return\r
+\r
+>!j::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send Ú ; (u+00da) U with acute\r
+ else\r
+ Send ú ; (u+00fa) u with acute\r
+return\r
+>!+j::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send ú ; (u+00fa) u with acute\r
+ else\r
+ Send Ú ; (u+00da) U with acute\r
+return\r
+\r
+>!y::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send Ÿ ; (u+0178) Y with diaeresis\r
+ else\r
+ Send ÿ ; (u+00ff) y with diaeresis\r
+return\r
+>!+y::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send ÿ ; (u+00ff) y with diaeresis\r
+ else\r
+ Send Ÿ ; (u+0178) Y with diaeresis\r
+return\r
+\r
+>!r::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send Ý ; (u+00dd) Y with acute\r
+ else\r
+ Send ý ; (u+00fd) y with acute\r
+return\r
+>!+r::\r
+ if GetKeyState("CapsLock", "T")\r
+ Send ý ; (u+00dd) y with acute\r
+ else\r
+ Send Ý ; (u+00fd) Y with acute\r
+return\r
+\r
+>!p::Send † ; (u+2020) dagger\r
+>!+p::Send ‡ ; (u+2021) double dagger\r
+\r
+>!s::Send ß ; (u+00df) small sharp s (Eszett)\r
+>!+s::Send § ; (u+00a7) section sign\r
+\r
+>!/::Send ¿ ; (u+00bf) inverted question mark\r
+>!?::Send ¶ ; (u+00b6) pilcrow sign\r
+\r
+>!1::Send ¡ ; (u+00a1) inverted exclamation mark\r
+>!+1::Send ¹ ; (u+00b9) superscript 1\r
+\r
+>!2::Send © ; (u+00a9) copyright sign\r
+>!+2::Send ² ; (u+00b2) superscript 2\r
+\r
+>!3::Send ± ; (u+00b1) plus-minus sign\r
+>!+3::Send ³ ; (u+00b3) superscript 3\r
+\r
+>!4::Send £ ; (u+00a3) pound sign\r
+>!+4::Send ¥ ; (u+00a5) yen sign\r
+\r
+>!5::Send € ; (u+20ac) euro sign\r
+>!+5::Send ¢ ; (u+00a2) cent sign (dollar)\r
+\r
+>!8::Send „ ; (u+201e) double low-9 quotation mark\r
+>!+8::Send ‚ ; (u+201a) single low-9 quotation mark\r
+\r
+>!9::Send “ ; (u+201c) left double quotation mark\r
+>!+9::Send ‘ ; (u+2018) left single quotation mark\r
+\r
+>!0::Send ” ; (u+201d) right double quotation mark\r
+>!+0::Send ’ ; (u+2019) right single quotation mark\r
+\r
+>!=::Send × ; (u+00d7) multiplication sign\r
+>!+=::Send ÷ ; (u+00f7) division sign\r
+\r
+>![::Send « ; (u+00ab) left-pointing double angle quotation mark\r
+>!{::Send ‹ ; (u+2039) left-pointing single angle quotation mark\r
+\r
+>!]::Send » ; (u+00bb) right-pointing double angle quotation mark\r
+>!}::Send › ; (u+203a) right-pointing single angle quotation mark\r
+\r
+>!;::Send ° ; (u+00b0) degree sign\r
+>!+;::Send · ; (u+00b7) middle dot\r
+\r
+>!6::\r
+ Input, key, L1, {bs}{del}{esc}{home}{end}\r
+ Send % dkCircumflex.item(key)\r
+return\r
+>!+6::\r
+ Input, key, L1, {bs}{del}{esc}{home}{end}\r
+ Send % dkCaron.item(key)\r
+return\r
+\r
+>!7::\r
+ Input, key, L1, {bs}{del}{esc}{home}{end}\r
+ Send % dkRingDotAbove.item(key)\r
+return\r
+>!+7::\r
+ Input, key, L1, {bs}{del}{esc}{home}{end}\r
+ Send % dkMacronStroke.item(key)\r
+return\r
+\r
+>!-::\r
+ Input, key, L1, {bs}{del}{esc}{home}{end}\r
+ Send % dkCedillaOgonek.item(key)\r
+return\r
+>!_::\r
+ Input, key, L1, {bs}{del}{esc}{home}{end}\r
+ Send % dkBreveSpecial.item(key)\r
+return\r
+\r
+>!'::\r
+ Input, key, L1, {bs}{del}{esc}{home}{end}\r
+ Send % dkAcuteAccent.item(key)\r
+return\r
+>!"::\r
+ Input, key, L1, {bs}{del}{esc}{home}{end}\r
+ Send % dkDiaeresis.item(key)\r
+return\r
+\r
+>!`::\r
+ Input, key, L1, {bs}{del}{esc}{home}{end}\r
+ Send % dkGraveAccent.item(key)\r
+return\r
+>!~::\r
+ Input, key, L1, {bs}{del}{esc}{home}{end}\r
+ Send % dkTilde.item(key)\r
+return\r
+\r
+>!\::\r
+ Input, key, L1, {bs}{del}{esc}{home}{end}\r
+ Send % dkNotSign.item(key)\r
+return\r
+>!|::\r
+ Input, key, L1, {bs}{del}{esc}{home}{end}\r
+ Send % dkBrokenBar.item(key)\r
+return\r
+\r
+>!m::\r
+ Input, key, L1, {bs}{del}{esc}{home}{end}\r
+ Send % dkGreekAlphabet.item(key)\r
+return\r
+>!+m::\r
+ Input, key, L1, {bs}{del}{esc}{home}{end}\r
+ Send % dkMathSymbols.item(key)\r
+return\r
+\r
+>!space::Send ; (u+00a0) non-breaking space\r
+>!+space::Send ; (u+00a0) non-breaking space\r